// 从小到大排序
function countSort(arr) {
    // 获取最大和最小值
    let min = arr[0];
    let max = arr[0];
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
        if (arr[i] < min) {
            min = arr[i];
        }
    }
    // 根据max和min创建计数数组
    const countLength = max - min + 1;
    const countArray = new Array(countLength).fill(0);
    // 计数统计
    for (let i = 0; i < arr.length; i++) {
        countArray[arr[i] - min]++;
    }
    // 计数数组转化为排名数组
    for (let i = 1; i < countArray.length; i++) {
        countArray[i] += countArray[i - 1];
    }
    // 倒着遍历原数组，根据排名重新组织顺序
    const sortedArray = new Array(arr.length);
    for (let i = arr.length - 1; i >= 0; i--) {
        sortedArray[countArray[arr[i] - min] - 1] = arr[i];
        countArray[arr[i] - min]--;
    }
    return sortedArray;
}

// const arr = [95,94,91,98,99,90,99,93,91,92];
const arr = [90,99,95,94,95];
const sortedArray = countSort(arr);
console.log(sortedArray);